var obj = {
  name: "frank",
  foo() {
    console.log(this);
  },
};

// 1. call / apply的显示绑定高于隐式绑定
obj.foo.apply("apply");
obj.foo.call("call");

// 2. bind的优先级高于隐式绑定
var bar = obj.foo.bind("bind");
bar();

// 3. 更明显的比较
function foo() {
  console.log(this);
}

var obj2 = {
  name: "frank",
  foo: foo.bind("obj2"),
};

obj2.foo();
